home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Mail / denext / dertf.l < prev    next >
Text File  |  1991-10-06  |  4KB  |  354 lines

  1.     /*
  2.      * A simple Lex grammar for Microsoft RTF.
  3.      * 
  4.      * Copyright (c) 1990, Keith Edwards
  5.      * May be freely used, modified, distributed, or copied as long as
  6.      * this notice stays intact.
  7.      *
  8.      * Keith Edwards
  9.      * Georgia Tech / SERC / Multimedia Group
  10.      * April 5, 1990
  11.      * <keith@dali.gatech.edu>
  12.      */
  13.  
  14. %e 4000
  15. %p 9000
  16. %n 1500
  17. %a 4000
  18. %o 5000
  19.  
  20. digit        [0-9]    
  21. num        [-]?[0-9]+
  22. alpha        [a-zA-Z]
  23. alphaspace    [a-zA-Z ]
  24. alphanum    [a-zA-Z0-9]
  25. alphanumdot    [a-zA-Z0-9.]
  26. alphanumdotund    [a-zA-Z0-9._]
  27. alphanumseq    {alphanum}+
  28. nil        \\fnil
  29. roman        \\froman
  30. swiss        \\fswiss
  31. modern        \\fmodern
  32. script        \\fscript
  33. decor        \\fdecor
  34. tech        \\ftech
  35. fctl        ({nil}|{roman}|{swiss}|{modern}|{script}|{decor}|{tech})
  36.  
  37.     int pos;    /* so far used only for attachments */
  38.  
  39. %%
  40. \\\{        printf("{");
  41. \\\}        printf("}");
  42. \\\        printf("\\");
  43.  
  44. \n        ;
  45. \\deff{num}    ;
  46. \\defformat    ;
  47. \\deftab{num}    ;
  48. \\\n        printf("\n");
  49. \{        ;
  50. \}        ;
  51.  
  52. \\ansi        ;
  53. \\mac        ;
  54. \\pc        ;
  55. \\pca        ;
  56.  
  57.  
  58. \\fonttbl\\f{num}    ;
  59. {fctl}\ [a-zA-Z]+\;    ;
  60.  
  61. \\sbasedon{num}    ;
  62. \\snext{num}    ;
  63.  
  64. \\red{num}    ;
  65. \\green{num}    ;
  66. \\blue{num}    ;
  67. \\cf{num}    ;
  68. \\cb{num}    ;
  69. \\colortbl    ;
  70.  
  71. \\pict        ;
  72. \\brdrs        ;
  73. \\brdrdb    ;
  74. \\brdrth    ;
  75. \\brdrsh    ;
  76. \\brdrdot    ;
  77. \\brdrhair    ;
  78. \\macpict    ;
  79. \\wmetafile{num}    ;
  80. \\wbitmap{num}    ;
  81. \\picw{num}    ;
  82. \\pich{num}    ;
  83. \\picwgoal{num}    ;
  84. \\pichgoal{num}    ;
  85. \\picscalex{num}    ;
  86. \\picscaley{num}    ;
  87. \\picscaled    ;
  88. \\piccropt{num}    ;
  89. \\piccropb{num}    ;
  90. \\piccropl{num}    ;
  91. \\piccropr{num}    ;
  92. \\wbmbitspixel{num}    ;
  93. \\wbmplanes{num}    ;
  94. \\wbmwidthbytes{num}    ;
  95. \\bin{num}    ;
  96.  
  97. \\footnote    ;
  98. \\chftn        ;
  99.  
  100. \\chatn        ;
  101. \\annotation    ;
  102. \\atnid        ;
  103.  
  104. \\headerl    ;
  105. \\headerr    ;
  106. \\headerf    ;
  107. \\footerl    ;
  108. \\footerr    ;
  109. \\footerf    ;
  110.  
  111. \\title        ;
  112. \\subject    ;
  113. \\author    ;
  114. \\operator    ;
  115. \\keywords    ;
  116. \\comment    ;
  117. \\version{num}    ;
  118. \\doccomm    ;
  119. \\vern{num}    ;
  120. \\creatim    ;
  121. \\revtim    ;
  122. \\printim    ;
  123. \\buptim    ;
  124. \\edmins{num}    ;
  125. \\yr{num}    ;
  126. \\mo{num}    ;
  127. \\dy{num}    ;
  128. \\hr{num}    ;
  129. \\min{num}    ;
  130. \\nofpages{num}    ;
  131. \\nofwords{num}    ;
  132. \\nofchars{num}    ;
  133. \\id{num}    ;
  134.  
  135. \\flddirty    ;
  136. \\fldedit    ;
  137. \\fldlock    ;
  138. \\fldpriv    ;
  139. \\fldinst    ;
  140. \\fldrslt    ;
  141.  
  142. \\bxe        ;
  143. \\ixe        ;
  144. \\txe[ ]{alphanumseq}    ;
  145. \\rxe[ ]{alphanumseq}    ;
  146.  
  147. \\tc        ;
  148. \\tcf{num}    ;
  149. \\tcl{num}    ;
  150.  
  151. \\bkmkstart    ;
  152. \\bkmkend    ;
  153.  
  154. \\paperw{num}    ;
  155. \\paperh{num}    ;
  156. \\margl{num}    ;
  157. \\margr{num}    ;
  158. \\margt{num}    ;
  159. \\margb{num}    ;
  160. \\facingp    ;
  161. \\gutter{num}    ;
  162. \\deftab{num}    ;
  163. \\widowctrl    ;
  164. \\hyphhotz    ;
  165. \\ftnsep    ;
  166. \\ftnsepc    ;
  167. \\ftncn        ;
  168. \\endnotes    ;
  169. \\enddoc    ;
  170. \\ftntj        ;
  171. \\ftnbj        ;
  172. \\ftnstart{num}    ;
  173. \\ftnrestart    ;
  174. \\pgnstart{num}    ;
  175. \\linestart{num}    ;
  176. \\landscape    ;
  177. \\fracwidth    ;
  178. \\nextfile    ;
  179. \\template    ;
  180. \\makebackup    ;
  181. \\defformat    ;
  182. \\revisions    ;
  183. \\margmirror    ;
  184. \\revprop{num}    ;
  185. \\revbar{num}    ;
  186.  
  187. \\sectd        ;
  188. \\sbknone    ;
  189. \\sbkcol    ;
  190. \\sbkpage    ;
  191. \\sbkeven    ;
  192. \\sbkodd    ;
  193. \\pgnstarts{num}    ;
  194. \\pgncont    ;
  195. \\pgnrestart    ;
  196. \\pgndec    ;
  197. \\pgnucrm    ;
  198. \\pgnlcrm    ;
  199. \\pgnucltr    ;
  200. \\pgnlcltr    ;
  201. \\pgnx{num}    ;
  202. \\pgny{num}    ;
  203. \\headery{num}    ;
  204. \\footery{num}    ;
  205. \\linemod{num}    ;
  206. \\linex{num}    ;
  207. \\linestarts{num}    ;
  208. \\linerestart    ;
  209. \\lineppage    ;
  210. \\linecont    ;
  211. \\vertalt    ;
  212. \\vertal    ;
  213. \\vertalc    ;
  214. \\vertalj    ;
  215. \\cols{num}    ;
  216. \\colsx{num}    ;
  217. \\linebetcol    ;
  218. \\endnhere    ;
  219. \\titlepg    ;
  220.  
  221. \\brdrt        ;
  222. \\brdrb        ;
  223. \\brdrl        ;
  224. \\brdrr        ;
  225. \\box        ;
  226. \\pard        ;
  227. \\s{num}    ;
  228. \\ql        ;
  229. \\qr        ;
  230. \\qj        ;
  231. \\qc        ;
  232. \\fi{num}    ;
  233. \\li{num}    ;
  234. \\ri{num}    ;
  235. \\sb{num}    ;
  236. \\sa{num}    ;
  237. \\sl{num}    ;
  238. \\intbl        ;
  239. \\keep        ;
  240. \\keepn        ;
  241. \\sbys        ;
  242. \\pagebb    ;
  243. \\noline    ;
  244. \\tx{num}    ;
  245. \\tqr        ;
  246. \\tqc        ;
  247. \\tqdec        ;
  248. \\tb        ;
  249. \\brdrbar    ;
  250. \\brdrbtw    ;
  251. \\brdrs        ;
  252. \\brdrth    ;
  253. \\brdrsh    ;
  254. \\brdrdb    ;
  255. \\brdrdot    ;
  256. \\brdrhair    ;
  257. \\brsp{num}    ;
  258. \\tldot        ;
  259. \\tlhyph    ;
  260. \\tlul        ;
  261. \\tlth        ;
  262.  
  263. \\posx{num}    ;
  264. \\posxc        ;
  265. \\posxl        ;
  266. \\posxo        ;
  267. \\posxr        ;
  268. \\posy{num}    ;
  269. \\posyil    ;
  270. \\posyt        ;
  271. \\posyc        ;
  272. \\posyb        ;
  273. \\absw{num}    ;
  274. \\dxfrtext{num}    ;
  275. \\pvmrg        ;
  276. \\pvpg        ;
  277. \\phmrg        ;
  278. \\phpg        ;
  279. \\phcol
  280.  
  281. \\clbrdrb    ;
  282. \\clbrdrt    ;
  283. \\clbrdrl    ;
  284. \\clbrdrr    ;
  285. \\trowd        ;
  286. \\trql        ;
  287. \\trqr        ;
  288. \\trqc        ;
  289. \\trgaph{num}    ;
  290. \\trrh{num}    ;
  291. \\trleft{num}    ;
  292. \\cellx{num}    ;
  293. \\clmgf        ;
  294. \\clmrg        ;
  295.  
  296. \\plain        ;
  297. \\b        ;
  298. \\i        ;
  299. \\strike    ;
  300. \\outl        ;
  301. \\shad        ;
  302. \\scaps        ;
  303. \\caps        ;
  304. \\v        ;
  305. \\f{num}    ;
  306. \\fs{num}    ;
  307. \\expnd{num}    ;
  308. \\ul        ;
  309. \\ulw        ;
  310. \\uldb        ;
  311. \\ulnone    ;
  312. \\up{num}    ;
  313. \\dn{num}    ;
  314. \\revised    ;
  315.  
  316. \\chdate    ;
  317. \\chtime    ;
  318. \\chpgn        ;
  319. \\chftn        ;
  320. \\chatn        ;
  321. \\chftnsep    ;
  322. \\\|        ;
  323. \\~        ;
  324. \\\-        ;
  325. \\_        ;
  326. \\'[0-9a-fA-F][0-9a-fA-F]    ;
  327. \\cell        ;
  328. \\row        ;
  329. \\par        ;
  330. \\sect        ;
  331. \\page        ;
  332. \\column    ;
  333. \\line        ;
  334. \\tab        ;
  335. \\:        ;
  336. \\\*        ;
  337.  
  338. \\rtf{num}    ;
  339. \\gray{num}    ;
  340.  
  341. \\attachment{num}[ ]{alphanumdotund}+     {
  342.         pos=index( yytext, ' ');
  343.         if (pos)
  344.             printf("[ Attachment inserted here: %s ]\n", pos );
  345.         }
  346.  
  347.  
  348.  
  349. %%
  350. main()
  351. {
  352.     yylex();
  353. }
  354.